home *** CD-ROM | disk | FTP | other *** search
/ Celestin Apprentice 5 / Apprentice-Release5.iso / Source Code / C / Frameworks / TransSkel 3.24 / Source / TSHistory < prev   
Text File  |  1996-01-17  |  28KB  |  541 lines

  1. TSHistory - history of modifications to TransSkel
  2.  
  3. 06/13/86    Beta version. (pd)
  4. 08/27/86    Version number changed to 1.01.
  5. - v1.0 DoGrow bug fixed - the port at the point of the
  6. InvalRect could have been anything; the fix is to set
  7. the port to the grown window first.  This also explains
  8. why the kludge to DoActivate in v1.0 worked.  (pd)
  9. 10/02/86    Version number changed to 1.02, as a result of adding
  10. modifications by David W. Berry (well!dwb@lll-lcc.arpa)
  11. for supporting window zooming.  Also used his modifications
  12. for supporting modeless dialogs (though not in the same
  13. form).  Dialog support can be #define'd on or off.  (pd)
  14. 12/28/86    Version number changed to 1.03.  Modified to work under
  15. LightspeedC v. 2.01 - took out definitions for window zooming
  16. stuff, as it is now supported by the compiler directly.  Also
  17. declared DoZoom static, fixing an oversight.  (pd)
  18. 01/18/86    Put a SetPort into DoZoom - ZoomWindow requires port to be
  19.             set to window being zoomed.  (pd)
  20.  
  21. 02/05/86    Version number changed to 1.04.  Big change:  port setting
  22. behavior made explicit - the only persistant switch occurs
  23. when a window comes active.  This changes underlying
  24. programming model (see manual for detailed discussion).
  25. Thanks to Duane Williams for pointing out that this should
  26. be done.
  27. - Typedef'd integer/long variables to Integer, Longint to
  28. facilitate coversion to other C compilers.  More complete
  29. type-casting done.  LightspeedC does a lot of it automatically,
  30. other compilers may not.  (pd - this version never released)
  31. 03/02/87    Fixed bug whereby clicks in drag region of non-active windows
  32. may not bring window to front.  Seems to be due to DragWindow
  33. calling StillDown to see if mouse is still down.  If the machine
  34. was busy otherwise when click occurred and mouse already up when
  35. DragWindow is called, the click ends up being ignored.  Thanks to
  36. Roger Humphrey for finding this one.
  37.  
  38. *** Changes implemented first by omh to Pascal Version
  39.  
  40.   4/18/87    Changed Desk Accessory code so it's more tolerant of memory
  41.             conditions for desk accessories.  (omh)
  42.   7/12/87    Added "cache" code to GetWDHandler.  Now TransSkel figures that
  43.             an event is most likely to occur for the same window as the
  44.             previous event.  Thus the WindowPtr and WDHandle for events
  45.             are cached and examined to avoid searching through the handler
  46.             list.  (omh)
  47.   7/12/87    Excised the notorious "SetPort" excess.  As pointed out by 
  48.             Duane Williams, SetPort traps abounded unnecessarily in
  49.             version 1.02.  These have been eliminated now with two
  50.             exceptions.  First, the port is set when a window handler
  51.             is installed.  The justification for this is that when a
  52.             handler is installed, it is likely that further processing
  53.             will be done on it immediately.  The application gets control
  54.             immediately after the handler is installed anyway, so this
  55.             behavior can be manually overridden where necessary.  Second,
  56.             when a window is activated, the port is set to it.  This
  57.             follows the model of keeping the port in sync with the active
  58.             window.  (omh)
  59.   7/14/87    Added grow zone function installation and MoreMasters to SkelInit,
  60.             which now requires two parameters. The first indicates the number
  61.             of times to call MoreMasters.  The second is a ProcPtr indicating
  62.             a user-supplied grow zone function to be called when memory problems
  63.             occur.  If nil, no grow zone function is installed.  (omh)
  64.   7/14/87    SkelMenu, SkelWindow, and SkelDialog now return zero or non-zero
  65.             to indicate failure or success of handler allocation.  This could
  66.             break *all* previous TransSkel applications (as will the change to
  67.             SkelInit, above.  Please see the section "How to adapt old
  68.             TransSkel to New" in the manual for detailed specifications on
  69.             how to convert your old programs.  TransSkel becomes more memory
  70.             conscious with these changes.  The functions SkelMenu, SkelWindow,
  71.             and SkelDialog are the only routines which actually allocate
  72.             memory.  Since they may be called at any time, knowing that you
  73.             have enough memory becomes important. Thus, these routines return
  74.             a value to indicate what happened.  If they return zero, then
  75.             memory allocation failed.  (omh)
  76.   10/21/87    Added another parameter to SkelMenu: drawBar:Boolean.   This tells
  77.             SkelMenu whether to draw the menu bar after adding the Menu.  This
  78.             is done to eliminate the menus popping up one at a time.  Simply
  79.             call SkelMenu with drawBar false until the last time you call
  80.             SkelMenu, then call it (for the last menu) with drawBar true.(omh)
  81.   10/26/87    Removed declarations for zoom-in and zoom-out.  Added Pascal changes (above)
  82.             to C version.  (omh)
  83.  
  84.   02/02/88    Merged  pd's 1.04 changes with those of omh, above, to create
  85.             release version 2.0.  Fixed bug whereby cmd-key equivalents
  86.             for menu selections would execute twice if DA window in front.
  87.             Thanks to Don Fredkin and Julian Vrieslander for finding this
  88.             one.  (pd)
  89.   12/07/88    Owen releases Pascal version 2.0, shaming Paul into finally
  90.             working on getting the last changes on the C version done.
  91.             The world rejoices :-)
  92.   02/02/89    v2.01.  Turned out the cmd-key bug fix wasn't, quite.  One
  93.             year later, the bug is finally (I hope) fixed.  (pd)
  94.  
  95. Additional changes for 3.00 (much of this based on Bob Schumaker's work):
  96.  
  97. 13 Dec 90 Release 3.01
  98. - Finally fixed misspelling of "Capitol" in my own address!
  99. - Added hook to be called when mouse goes down in menu bar.  Allows
  100. applications to update their menus then instead of every time something
  101. is changed in application that causes menu item changes.
  102. 14 Dec 90
  103. - Changed SkelEventMask(), SkelBackground(), etc. to SkelSetEventMask(),
  104. SkelSetBackground(), for symmetry with SkelGetXXX() routines.  Cosmetic.
  105. - Started changing routines that don't return any value to be of type void.
  106. - Changed gzProc arg to SkelInit to Size (*gzProc)().
  107. - Started changing routines that return 1/0 to be Boolean.
  108. - Started adding prototypes.  This means there is now a "TransSkel.h"
  109. that must be #include'd in application source files for public
  110. routines.  Private routine prototypes are internal to TransSkel.c.
  111. - DoMenuCommand() now takes modifier keys and passes them to menu handler
  112. routines, so can tell things like option-command-X, etc.  This includes
  113. the Apple menu handler for the About item, so that the About proc takes
  114. one argument, the modifiers.  Now you, too, can do all kinds of weird
  115. stuff by holding down modifiers and selecting About..., like ResEdit
  116. does.
  117. - Started taking out "register" stuff.  This was originally put in to
  118. save a few bytes, but it actually makes code harder to understand,
  119. decreasing pedagogical value (assuming there is any).
  120. 21 Dec 90
  121. - Took out most Macintosh header file #includes.  <MacHeaders> is assumed
  122. to be turned on so that they're not necessary.
  123. 27 Dec 90
  124. - Changed menu handler routines back to not pass the modifier keys.  After
  125. further thought it seems this was a bad idea:  (i) the idea of passing
  126. modifiers around can be extended indefinitely to all kinds of events,
  127. leading to lots of function calling changes; (ii) in most cases the
  128. modifiers are not of interest anyway.  Hence, a different approach is
  129. adopted: a routine SkelGetModifiers() can be called (from anywhere, but
  130. typically from within within handler routines) to retrieve the modifiers
  131. of the current event.  This extends the capability of getting the
  132. modifiers to all event handlers without changing the calling sequences.
  133. Handlers that have always been passed modifiers still get them (this
  134. includes window handler mouse and key click routines).
  135. - Added some typedefs for handles to window and menu handlers to be able
  136. to type in variable declarations without all the **'s everywhere
  137. (laziness).
  138. 03 Jan 91
  139. - MoreMasters() call in SkelInit() now follows calls to MaxApplZone()
  140. and the other manager initializations.
  141. - mBarHeight initialized in SkelInit() using Script Manager routine
  142. GetMBarHeight() if not running 64K ROM.
  143. - Added parameter to SkelMenu() to indicate whether or not the menu is
  144. a submenu.  This allows hierarchical menus to be handled.
  145. - Added parameter to window key-click handler for passing key code.
  146. This is used to indicate key-ups events -- the high bit (bit 7) is
  147. set.
  148. 04 Jan 91
  149. - Began to add MultiFinder support.
  150. - Add flag to menu handler struct indicating whether menu is submenu
  151. or not.  SkelRmveMenu() doesn't redraw menu bar if not (what for?).
  152. - Added global variable mhDrawBarOnRmve for telling SkelRmveMenu()
  153. never to redraw menu bar.  SkelClobber() sets false to avoid menu
  154. bar flicker when all menus are removed.
  155. - Changed default value of eventMask to everyEvent^keyUp from
  156. everyEvent in anticipation of allowing key-up processing.
  157. - Save system event mask in SkelInit() and restore in SkelClobber()
  158. to protect Finder (TN 202).
  159. 07 Jan 91
  160. - TN TB 29, p.1, PGMF 2-3 say "you...should not call GetWMgrPort() under
  161. any circumstances."  SkelInit() was doing that to get screen bounds
  162. for window dragging and sizing, so now screenbits.bounds is
  163. used instead (which is equivalent).  Even that isn't quite correct,
  164. since it provides no support for multiple monitors. (Fixed below)
  165. 08 Jan 91
  166. - Ahem.  See 04 Jan 91.  Changed default value of eventMask to
  167. everyEvent^keyUpMask instead of everyEvent^keyUp.  No wonder
  168. mouse-ups were getting eaten! (keyUp == mUpMask).
  169. 09 Jan 91
  170. - TriggerUpdate(), DoGrow() and DoZoom() now pass window handler
  171. only, instead of handler and window.  The window can be derived
  172. from the handler anyway.  One subtle difference is that grows
  173. and zooms for windows without TransSkel handlers won't do
  174. anything, but that situation is unlikely to occur.
  175. - DoZoom() now tries to handle multiple monitors, zooming window
  176. onto screen containing most of window.  Zoom behavior will be
  177. application-modifiable soon, so the code that finds the correct
  178. device is packaged into a public routine SkelGetWindowDevice()
  179. in order that applications be able to use it.  This routine
  180. returns the device containing most of the window and the maximum
  181. rectangle to which the window can be zoomed, taking into account
  182. the menu bar and window title bar.
  183. - DoZoom() now erases the zoomed window before zooming it.  Looks
  184. better (IM IV-50, TN TB 30, p.4).
  185. - Added use of WaitNextEvent() if it's implemented.
  186. 10 Jan 91
  187. - SkelMain(), SkelClobber(), SkelRmveWindow() and SkelRmveMenu()
  188. no longer have global knowledge of what doneFlag, mhDrawBarOnRmve,
  189. whClobOnRmve and mhClobOnRmve, respectively, should be reset to
  190. after they change them.  Instead, they save the current value,
  191. change it, then restore it to the saved value.  This has no
  192. practical effect now, but it might prevent bugs during future
  193. development.
  194. - Window dragging and sizing is now multiple-monitor aware.  Uses
  195. bounding box of desktop (GrayRgn), per IM V-121, TN TB 30, p.2.
  196. - Decided that saving/restoring system event mask wasn't worth it,
  197. and removed code that did it.
  198. 12 Jan 91
  199. - Yet more renaming.  SkelMain() is non-descriptive.  It's now
  200. SkelEventLoop().  SkelWhoa() is now SkelStopEventLoop().  Since
  201. I anticiplate that SkelClobber() may one day do more than clobber,
  202. e.g., do other general cleanup, it's now SkelCleanup().
  203. - The event-routing routine DoEvent() is now named SkelRouteEvent()
  204. and is public.  There are places where the application might wish
  205. to have a specific event that it obtains itself be processed by
  206. TransSkel.
  207. 13 Jan 91
  208. - SkelApple() processing changes: the application can now pass an
  209. "About" string that actually contains more than one item, for
  210. instance, "\pAbout...;Help/H".  This can be useful for applications
  211. that want another non-desk accessory item in the Apple menu.  The
  212. handler function is passed the item number if a non-DA is selected
  213. from the menu (it formerly took no arguments).  This change makes
  214. the function isomorphic to the argument structure of other menu
  215. handlers.  RESTRICTION: the item string can't contain a "-" item.
  216. 14 Jan 91
  217. - Split the SkelApple() stuff out into a separate file.  Presumably
  218. most routines use it, but if they don't, the code won't be linked
  219. in.
  220. 21 Jan 91
  221. - SkelQuery() implemented to allow TransSkel to be interrogated
  222. about some aspects of the execution environment.
  223. 22 Jan 91
  224. - SkelSetZoom() and SkelGetZoom() allow zoom procedures to be set to
  225. override the default.
  226. - Changed SkelSetGrowBounds() to use GetWDHandler() rather than
  227. GetWHandler().  Shouldn't hurt, and might help in the long run if
  228. growable dialog windows are invented in the future.
  229. 25 Jan 91
  230. - DoActivate() was setting port on activates, to implement the
  231. change-port-to-active-window port-setting model.  It was also
  232. setting it on deactivates, to make sure it was set properly during
  233. execution of activate handler.  Now it saves *and restores* the port
  234. on deactivates in the case that the deactivate is due to a
  235. dialog coming in front: typically the port is set to the dialog and
  236. it's processed with ModalDialog().  With the advent of SkelDlogFilter(),
  237. the deactivate of underlying window can now be processed easily, and
  238. that means the deactivate should leave the port where it was (i.e., the
  239. dialog!).
  240. 26 Jan 91
  241. - SkelGetWindowDevice() doesn't take window title height into account
  242. anymore, it simply returns the usable area on the device containing
  243. most of the window. It turns out that for invisible windows the
  244. structure region is empty, so trying to take title bar height into
  245. account for prepositioning invisible windows is impossible.  The
  246. caller must try to do that itself, perhaps by relying on prior
  247. (i.e., hardcoded, ugh) knowledge of window characteristics. In
  248. TransSkel itself, this affects DoZoom(), which has to modify the
  249. rect returned from SkelGetWindowDevice().  This is easy, though, because
  250. the window is known to be visible and the structure region is valid.
  251.  
  252. 28 Jan 91 Release 3.02
  253. - Filter demo placed on ftp.primate.wisc.edu for FTP, so change
  254. version number of development version.
  255. 29 Jan 91
  256. - Added #define for skelAppleMenuID (value 1) to TransSkel.h so
  257. applications can know the apple menu's ID without knowing a magic
  258. number.
  259. - SkelGetXXX() functions now return a value rather than stuffing the
  260. value into a pointer argument. No doubt some will think this a
  261. gratuitous change.
  262. - Changed Longint in Compiler.h to LongInt.  More gratuitousness.
  263. 17 Feb 91
  264. - Started adding stuff to implement window property lists.
  265. 18 Feb 91
  266. - Make window zooms clip to upper size bounds defined in grow
  267. rectangle.
  268. 12 Jun 92
  269. - Lots of changes to TransSkel.h.  Made all function names #defines instead
  270. that evaluate to the real function name; effect is that TransSkel.h MUST be
  271. included in source files that call TS routines.  Added bunches of function
  272. pointer typedefs.
  273. - SkelDlogFilter() now takes boolean argument so caller can indicate whether
  274. return/enter key processing should be done by standard filter.
  275. 17 Jun 92
  276. - SkelGetZoom() returns function pointer as return value rather than in
  277. an argument.
  278. 20 Feb 93
  279. - Check FrontWindow() != nil in DoDialog() as per bug in IsDialogEvent()
  280. (it fails if there's no front window (MMWZ says so, anyway)).
  281.  
  282. 05 Jun 93 Release 3.03
  283. - Conversion for THINK C 6.0.
  284. 07 Jun 93
  285. - Changed SkelAddWindProp() to fail if the property already exists.  Before
  286. it just replaced the data, which could be dangerous if the data was a handle.
  287. 03 Jul 93
  288. - Changed SkelWindow() to transfer existing window properties if the handler
  289. for the window exists already.  Previously properties were destroyed.  Also
  290. use new routine DetachWDHandler() in SkelWindow() and SkelRmveWindow(),
  291. which obviates need for whClobOnRmve.
  292. - Changed the window property routines to call GetWDHandler() instead of
  293. GetWHandler(), since dialog windows might have properties, too.
  294. - SkelDialog() intalls a skelWPropModeless property to the window after
  295. installing the window's handler.
  296.  
  297. 08 Oct 93 Release 3.04
  298. - Changed the argument list to SkelInit().  See TPN #5 for details.
  299. 16 Oct 93
  300. - Moved handling of idle task from SkelEventLoop() to SkelRouteEvent(),
  301. in the nullEvent code.
  302. 19 Oct 93
  303. - Added SkelSetWaitTimes(), SkelGetWaitTimes() to set/get wait times used by
  304. WaitNextEvent().
  305. 21 Oct 93
  306. - Changed Boolean SkelQuery (Integer selector, LongInt *response)
  307. to LongInt SkelQuery (Integer selector).  Now you can just test the
  308. return value as the query result.
  309. 30 Oct 93
  310. - Added SkelTrapAvailable() for checking whether a given trap is
  311. implemented.
  312. - Added SkelQuery() query types skelQHasGestalt and skelQHasAppleEvents
  313. that indicate whether Gestalt() is available and whether Apple Events
  314. are available.
  315. 01 Nov 93
  316. - SkelCleanup() now hides all windows back-to-front before removing
  317. handlers, and closes any open DA's.
  318. - Added SkelQuery selector type skelQSysVersion for obtaining the
  319. system software version.
  320. 08 Nov 93
  321. - Look at 'SIZE' resource -1 to see whether the application wants to
  322. receive mouse clicks that bring it to the foreground.  (If a click occurs
  323. in a non-frontmost window, the click is used to select the window, but
  324. then must be duplicated as a content-area click.)
  325. 11 Nov 93
  326. - Renamed the idle-time procedures SkelSetBackground() and
  327. SkelGetBackground() to SkelSetIdle() and SkelGetIdle() since "background"
  328. has a meaning other than "idle" in a multitasking environment.  Also
  329. renamed SkelBackgroundProcPtr type to SkelIdleProcPtr.
  330. 13 Nov 93
  331. - SkelGetZoom() was declared as SkelWindZoomProcPtr *, not as
  332. SkelWindZoomProcPtr.  Fixed.
  333. 14 Nov 93
  334. - Save and restore port in SkelGetWindowDevice() in case window is
  335. not the active window (e.g., if invisible).
  336. 18 Nov 93
  337. - Made DoZoom() save and restore the port since it's not known that
  338. the port is set to the zoomed window if zooming is initiated by the
  339. application (as opposed to the user clicking in the zoom box of the
  340. active window).
  341. - Added SkelActivate() so that application programs can tell TransSkel
  342. to call a window's activate procedure.  This is useful when you don't
  343. know a window's activate procedure in your application code.  It's also
  344. called during disk-insert processing before bringing up the 
  345. disk-initialization dialog to deactivate the front window.
  346. - Added SkelClose() so that application programs can tell TransSkel to
  347. call a window's close procedure.  This is useful when you don't know a
  348. window's close procedure in your application code.  It also knows how to
  349. close DA's.
  350. 24 Nov 93
  351. - No way to specify that window idle procedures should execute differently
  352. when application is in foreground or background.  The current mechanism
  353. of determining whether to run the proc depending on whether it runs only
  354. when the window is frontmost or not makes less sense in a multitasking
  355. environment.  If a proc runs only when the window's frontmost, but the
  356. application is suspended, should it run?  Maybe not.  In lieu of a good
  357. scheme for deciding without a bunch of complexity in TransSkel, I judge
  358. it best to skip all window idle procs if the application is suspended.
  359.  
  360. 06 Dec 93 Release 3.05
  361. - SkelClose() provides a way for the application to close any window.  DoClose()
  362. has assumed the port will be set correctly, but SkelClose() invalidates that
  363. assumption.  So now the port is saved before and restored afterward.
  364. 07 Dec 93
  365. - Split out SkelGetWindowDevice() into its own file.
  366. - Added SkelGetWindTitleHeight(), which determines height of window title bar
  367. regardless of script system.  Used it in DoZoom(), which should now work
  368. properly internationally.
  369. 08 Dec 93
  370. - Renamed SkelGetSuspend(), SkelSetSuspend(), SkelSuspendProcPtr to
  371. SkelGetSuspendResume(), SkelSetSuspendResume(), SkelSuspendResumeProcPtr.
  372.  
  373. 22 Dec 93 Release 3.06
  374. - New convenience function SkelGetRectDevice() added.  It's similar to
  375. SkelGetWindDevice().
  376. 23 Dec 93
  377. - Added skelQQDVersion selector for SkelQuery() that returns QuickDraw
  378. version number.
  379. 31 Dec 93
  380. - SkelGetWindowDevice() now computes screen overlap *including* menu bar,
  381. since even though the menu bar obscures a window, that is part of the overlap.
  382. Returned value for usable area on device still doesn't include menu bar.
  383. - Added several files to the "convenience" portion of TransSkel containing
  384. routines to perform some common control and dialog item operations.
  385. 02 Jan 94
  386. Junked the use of “#define function function_” definitions in TransSkel.h to
  387. force link errors if TransSkel.h isn’t included in a source file that calls
  388. TransSkel functions. That discipline can be enforced in your application
  389. simply by turning on the Require Prototypes option in the project.
  390. 03 Jan 94
  391. - Added auxiliary functions SkelDlogDefaultItem() and SkelDlogCancelItem() for
  392. specifying which dialog items are the default and cancel items.  These are used
  393. in conjunction with SkelDlogFilter().
  394. 04 Jan 94
  395. - Added function SkelDlogFilterYD() for installing filters that can be used
  396. with the System 7 Standard File dialogs.
  397. - Changed type of SkelDlogFilter() from SkelDlogFilterProcPtr to
  398. ModalFilterProcPtr.
  399. - Undid Integer/LongInt type stuff back to short/long. Nobody else in the world
  400. uses Integer/LongInt and it just adds another header file requirement.  Goodbye
  401. Compiler.h.
  402.  
  403. 07 Jan 94 Release 3.07.
  404. - SkelDlogFilter()/SkelDlogFilterYD() no longer check autoKey.
  405. 13 Jan 94
  406. - Fixed bug in SkelDlogFilter() handling of return/enter when default button
  407. inactive and edittext item present.
  408. 15 Jan 94
  409. - New convenience routines SkelToggleCtlValue() and SkelToggleDlogCtlValue().
  410. 17 Jan 94
  411. - Fixed SkelRouteEvent() bug.  pIdle was being called on occurrance of null
  412. events.  However, if the front window was a dialog, DoDialog() handled null
  413. events first and so pIdle never saw them.  Changed by calling pIdle before
  414. DoDialog().
  415. - New convenience routines SkelAlert(), SkelSetAlertPosRatios() and
  416. SkelGetAlertPosRatios().
  417.  
  418. 28 Jan 94 Release 3.08
  419. - New convenience function SkelSetDlogType().
  420. - New core function SkelGetCurrentEvent(), which returns a pointer to the last
  421. event seen by SkelRouteEvent().
  422. - Eliminated ghastly explanation about DA's and pseudo null events from
  423. SkelEventLoop() code.  Check Snippets/3.07-SkelEventLoop if you want to see
  424. what it was all about.
  425. - Eliminated some superfluous prototypes.
  426.  
  427. 31 Jan 94 Release 3.09
  428. - Added new core routines SkelGetWindContentRect() and SkelGetStructureRect(),
  429. for returning a window’s content and structure rectangles.  These are to a
  430. large degree what the guts of SkelGetWindTitleHeight() was, so that function
  431. was rewritten in terms of them.
  432. 01 Feb 94
  433. - Rewrote SkelGetRectDevice() to be more general, made it a core instead of
  434. a convenience routine, rewrote SkelGetWindowDevice() in terms of it.  This
  435. eliminates the former redundancy between the two routines.  SkelGetRectDevice()
  436. now has two more arguments, though, so it's incompatible with pre-3.09 releases.
  437. - Fixed bug in SkelGetRectDevice() -- was testing for appropriate devices
  438. using "if(!condition && !condition)" instead of "if(!condition || !condition)."
  439. - Offset window userState rectangle when window is dragged in SkelRouteEvent().
  440. Otherwise it's hard to save window positions accurately.
  441. - Added new convenience routine SkelPause() for pausing process execution.
  442. 02 Feb 94
  443. - Added new SkelQuery() selector skelQGrayRgn which returns a copy of the
  444. desktop region.
  445.  *
  446.  * 06 Feb 94 Release 3.10
  447.  * - Modified entire library source so that it can be compiled with either
  448.  * C-compatible or Pascal-compatible bindings.  This allows a binary library
  449.  * to be compiled that can be linked into THINK Pascal applications while
  450.  * preserving compatibility with existing TransSkel C applications.  This
  451.  * modification was suggested by Lionel Cons, who also contributed a working
  452.  * prototype and the major portion of the Pascal header file.
  453.  * - Fixed cast bug in SkelEventLoop().
  454.  * 07 Feb 94
  455.  * - SkelApple() now takes an empty string or nil to indicate no application item,
  456.  * rather than nil only.
  457.  * 08 Feb 94
  458.  * - SkelPositionWindow() positions windows using the structure rectangle rather
  459.  * than the content rectangle now.  Give better positioning.
  460.  *
  461.  * 17 Feb 94 Release 3.11
  462.  * - New function SkelTestRectVisible() to check whether or not a
  463.  * rectangle is completely contained within the desktop region.
  464.  * - SkelAlert() uses SkelTestRectVisible() to check whether an alert will be
  465.  * entirely visible when it's supposed to be positioned on the parent window.
  466.  * If not, it's positioned on the parent device instead.
  467.  * - When position type is skelPositionOnParentWind, SkelGetReferenceRect() now
  468.  * returns the structure rectangle rather than the content rectangle.
  469.  * - SkelPositionWindow() now accounts for difference between width of structure
  470.  * and content rectangle of window to be positioned.
  471.  * 20 Feb 94
  472.  * - Pascal bindings for the interface functions are now standard.  C bindings
  473.  * are no longer used.
  474.  *
  475.  * 14 Apr 94 Release 3.12
  476.  * - Added SkelDlogTracksCursor() function.
  477.  *
  478.  * 22 Apr 94 Release 3.13
  479.  * - New function SkelGetWindPropData().  Note caveat in comment preceding
  480.  * function definition.
  481.  * 23 Apr 94
  482.  * - Started adding support for movable modal dialogs.
  483.  * - Added variable hasGetWVariant used to tell if GetWVariant() exists
  484.  * for determining whether a dialog is a movable modal or not.
  485.  * - Standard dialog filter passes command-clicks in drag region of underlying
  486.  * windows to TransSkel's event router.
  487.  * 25 Apr 94
  488.  * - Command-period isn't passed to menu routines any more.  Instead the key
  489.  * handler is called.  The key handler can notice the Cancel and respond
  490.  * accordingly if it wants to.
  491.  * - All dialog events for modeless and movable modeless dialog are now handled
  492.  * in SkelRouteEvent().  (Null events, mouse and key clicks, updates, activates.)
  493.  * - Since dialog support is now integrated into the main event routing, the
  494.  * old DoDialog() function obsolete.
  495.  * - The supportDialogs #define is also obsolete.
  496.  * - The dialog event mask is also obsolete, so SkelSetDlogMask() and
  497.  * SkelGetDlogMask() are obsolete, too, and have been dropped.
  498.  * - Command-clicks in drag region of underlying windows while movable modal
  499.  * dialog is frontmost are processed.
  500.  * 26 Apr 94
  501.  * - New routines SkelIsDlog() and SkelIsMMDlog() for determining whether a
  502.  * window is a dialog or movable modal dialog, respectively.
  503.  * - Movable modal dialogs can now be registered with SkelDialog().  The property
  504.  * added by the routine is now skelWPropModeless or skelWPropMovableModal depending
  505.  * on the type of dialog window.
  506.  * - Renamed SkelRouteEvent() to RouteEvent().  SkelRouteEvent() is now a call
  507.  * to RouteEvent() plus the stuff that used to be in SkelEventLoop() for polling
  508.  * window-specific idle-time procedures.  The effect is that idle procedures that
  509.  * are supposed to run even for windows that are not frontmost no longer freeze
  510.  * when a modal dialog came up (if you use SkelDlogFilter()).
  511.  * 27 Apr 94
  512.  * - Dropped the distinctions between GetWDHandler(), GetDHandler(), and
  513.  * GetWHandler().  With more pervasive dialog support, the instances where it
  514.  * really matters whether a dialog or non-dialog window is being handled are
  515.  * rare.  GetWHandler() now suffices everywhere.  Renamed DetachWDHandler() and
  516.  * oldWDHandler to DetachWHandler() and oldWHandler for consistency.
  517.  * - GetWHandler() now returns faster when the argument is nil.
  518.  * - Revised the argument structure of SkelDialog() to allow an event filter
  519.  * to be specified.
  520.  * - Bug fix:  SkelAddWindProp() was passing propData as the propType argument
  521.  * to SkelGetWindProp()  when checking to see if a property of the given type
  522.  * already existed.
  523.  * 29 Apr 94
  524.  * - New routine SkelDlogMapKeyToButton() for helping to map return, enter,
  525.  * escape and command-period to default or cancel button in dialogs.
  526.  * - Window-specific idle-time routines now run when application is in background.
  527.  
  528.  * 02 May 94 Release 3.14
  529.  * Changed the skelResumeProc member of SkelInitParams structure from type
  530.  * ResumeProcPtr to type SkelResumeProcPtr.  ResumeProcPtr is disappearing from
  531.  * Apple's header files, since you're only supposed to pass nil to InitDialogs()
  532.  * under System 7 now.  This should help TransSkel compile under THINK C 7.
  533.  *
  534.  * 03 May 94 Release 3.15
  535.  * - Fixed bug in SkelDlogFilter.c/ModalFilterYD() causing machine lockup
  536.  * if SkelDlogFilterYD() was used.
  537.  *
  538.  * 04 May 94 Release 3.16
  539.  * - Fixed bug in RouteEvent() causing crashes if application idle-time function
  540.  * changed the front window.
  541.